import * as mongoose from 'mongoose';

export const ProductSchema = new mongoose.Schema<Product>(
  {
    /** 批次号 */
    sn: { required: true, type: String },
    /** 店铺id */
    storeId: { required: true, type: String },
    /** 主图 */
    image: { required: true, type: String },
    /** sku 名称 */
    sku: { required: true, type: String },
    /** 价格 */
    price: { required: true, type: Number },
    /** 店铺名 */
    store: { required: true, type: String },
    /** 关键词 */
    keyword: [
      {
        num: { required: true, type: Number },
        value: { required: true, type: String },
      },
    ],
    remark: { default: '', type: String },
    boss: { required: true, type: String },
    warn: { default: false, type: Boolean },
    sortType: { default: 'noStore', type: String },
  },
  {
    collection: 'product',
    versionKey: false,
    toObject: {
      virtuals: true,
    },
  },
);

export interface Product {
  id: string;
  /** 批次号 */
  sn: string;
  /** 店铺id */
  storeId: string;
  /** 店铺名 */
  store: string;
  /** 主图 */
  image: string;
  /** sku 名称 */
  sku: string;
  /** 价格 */
  price: number;
  /** 产品名 */
  title: string;
  /** 关键词 */
  keyword: Array<{
    num: number;
    value: string;
  }>;
  /** 老板名 */
  boss: string;
  /** 是否高亮备注 */
  warn?: boolean;
  /**
   * 排单类型
   *
   * `noStore` 同店铺产品不能在一组内
   *
   * `noBoss` 同老板店铺不能在一组内
   *
   * `limit` 同老板最多三个不同店铺在一组内
   *
   * 默认 `noStore`
   */
  sortType: 'noStore' | 'noBoss' | 'limit';
  remark: string;
}
